package com.yssw.test;

import com.yssw.client.domain.ClientUserSignLog;
import com.yssw.client.domain.DrinkWaterLog;
import com.yssw.client.mapper.ClientUserSignLogMapper;
import com.yssw.client.mapper.DrinkWaterLogMapper;
import com.yssw.util.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @Author KnockingFarmers
 * @Date 2023/3/30 10:48
 * @PackageName:com.yssw.test
 * @ClassName: TestController
 * @Description: TODO
 * @Version 1.0
 */
@RestController
@RequestMapping("/test")
public class MyTestController {

    @Autowired
    RedisTemplate redisTemplate;
//    @PostMapping
//    public void test() {
//        //filename  word文档路径
//        Document doc = new Document(filename);
////htmlname  html文件路径，SaveFormat.HTML  另存的文件类型
//        doc.save(htmlname, SaveFormat.HTML);
//        /**这两步就已经将word文档转化为了一个html文件，如果文档里待图片，
//         * 可能会报找不到类异常，根据报错下载相应的jar包即可。
//         *有图片的文档，转化为html后，会在html文件所在的目录生成相应的图片文件，
//         *html文件会引用这些文件，但相对路径可能会显示异常。需要重新处理转化后的html文件
//         *将html读取进来，值得一提的是，doc.save方法保存的html文件是utf-8编码，
//         *因此后续html文件的读写也需要用到utf-8
//         */
//        BufferedReader reader = null;
//        StringBuffer buff = new StringBuffer();
//        try {
//            reader = new BufferedReader(new InputStreamReader(new FileInputStream(htmlname), "UTF-8"));
//            String line;
//            while ((line = reader.readLine()) != null) {
//                buff.append(line);
//            }
//            reader.close();
//        } catch (
//                Exception e) {
//            e.printStackTrace();
//        }
//
//        //替换图片的src值
//        String htmlStr = buff.toString();
//        Document parse = Jsoup.parseBodyFragment(htmlStr);
//        //拿到html中所有的img节点
//        Elements imgs = parse.getElementsByTag("img");
//        if (imgs.size() > 0) {
//            for (Element img : imgs) {
//                //获取每个img节点的src元素
//                String linkSrc = img.attr("src");
//                //替换Src值为合适的路径
//                linkSrc = "http://xxxxxx" + linkSrc;
//                img.attr(tag, linkSrc);
//            }
//            String html = parse.html();
////输出修改后的html文件（同样也是utf-8编码）
//            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(htmlname), "UTF-8");
//            BufferedWriter output = null;
//            try {
//                output = new BufferedWriter(outputStreamWriter);
//                output.write(html);
//            } catch (
//                    IOException e) {
//                e.printStackTrace();
//            } finally {
//                try {
//                    output.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }


    @Autowired
    private ClientUserSignLogMapper logMapper;

    @GetMapping("/date")
    public String testLog() {
        List<String> dayByMonth = new ArrayList<>();
        try {
            Calendar c = Calendar.getInstance();
            // 获取当前的年份
            int year = c.get(Calendar.YEAR);
            // 获取当前的月份（需要加1才是现在的月份）
            int month = c.get(Calendar.MONTH) + 1;
            // 获取本月的总天数
            int dayCount = c.getActualMaximum(Calendar.DAY_OF_MONTH);
            // 定义时间格式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            // 开始日期为当前年月拼接1号
            Date startDate = sdf.parse(year + "-" + month + "-01");
            // 结束日期为当前年月拼接该月最大天数
            Date endDate = sdf.parse(year + "-" + month + "-" + dayCount);
            // 设置calendar的开始日期
            c.setTime(startDate);
            // 当前时间小于等于设定的结束时间
            while (c.getTime().compareTo(endDate) <= 0) {
                String time = sdf.format(c.getTime());
                dayByMonth.add(time);
                // 当前日期加1
                c.add(Calendar.DATE, 1);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }

        dayByMonth.forEach(date -> {
            ClientUserSignLog log = new ClientUserSignLog();
            log.setClientUserId(3L);
            log.setSignType(1);
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date parse = format.parse(date);
                log.setSignTime(parse);
                log.setCreateTime(new Date());
                logMapper.insertClientUserSignLog(log);
            } catch (ParseException e) {
                e.printStackTrace();
            }

        });
        return "hello";
    }

    @Autowired
    private FileUtil fileUtil;

    @GetMapping("/file")
    public String testFile( MultipartFile file) throws Exception {
        return fileUtil.word2007ToHtml(file);
    }
    @GetMapping("/redis")
    public String redis() throws Exception {
        
        return "ok";
    }

}
